/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import java.util.Calendar;
import java.util.List;

/**
 *
 * @author Luiz Cunha
 */
public class Pedido
{

    private Integer idPedido;
    private Double valorTotal;
    private List<Linha> linhas;
    private Usuario usuario;
    private Cliente cliente;
    private TipoDePagamento tipoDePagamento;
    private Calendar calendar;

    public Pedido(Usuario usuario, Cliente cliente, TipoDePagamento tipoDePagamento, Calendar calendar)
    {
        this.usuario = usuario;
        this.cliente = cliente;
        this.tipoDePagamento = tipoDePagamento;
        this.calendar = calendar;
    }

    public Pedido()
    {
    }

    public Pedido(Integer idPedido, Double valorTotal, List<Linha> linhas, Usuario usuario, Cliente cliente, TipoDePagamento tipoDePagamento, Calendar calendar)
    {
        this.idPedido = idPedido;
        this.valorTotal = valorTotal;
        this.linhas = linhas;
        this.usuario = usuario;
        this.cliente = cliente;
        this.tipoDePagamento = tipoDePagamento;
        this.calendar = calendar;
    }

    public Calendar getCalendar()
    {
        return calendar;
    }

    public void setCalendar(Calendar calendar)
    {
        this.calendar = calendar;
    }

    public Integer getIdPedido()
    {
        return idPedido;
    }

    public void setIdPedido(Integer idPedido)
    {
        this.idPedido = idPedido;
    }

    public Double getValorTotal()
    {
        return valorTotal;
    }

    public void setValorTotal(Double valorTotal)
    {
        this.valorTotal = valorTotal;
    }

    public List<Linha> getLinhas()
    {
        return linhas;
    }

    public void setLinhas(List<Linha> linhas)
    {
        this.linhas = linhas;
    }

    public Usuario getUsuario()
    {
        return usuario;
    }

    public void setUsuario(Usuario usuario)
    {
        this.usuario = usuario;
    }

    public Cliente getCliente()
    {
        return cliente;
    }

    public void setCliente(Cliente cliente)
    {
        this.cliente = cliente;
    }

    public TipoDePagamento getTipoDePagamento()
    {
        return tipoDePagamento;
    }

    public void setTipoDePagamento(TipoDePagamento tipoDePagamento)
    {
        this.tipoDePagamento = tipoDePagamento;
    }

    public void updateValorTotal()
    {
        for (Linha linha : this.getLinhas())
        {
            if(this.getCliente() == null)
                this.valorTotal += linha.getProduto().getPrecoVarejo();
            else
                this.valorTotal += linha.getProduto().getPrecoVarejo();
        }
    }

    public String printLinhas()
    {
        String retorno = "";
        for (Linha linha : linhas)
        {

            retorno += linha.toString();
        }
        return retorno;
    }

    @Override
    public String toString()
    {
        String linhas = this.printLinhas();
        return "Pedido id: " + this.getIdPedido() + "\n"
                + "Valor total: " + this.getValorTotal() + "\n"
                + "Tipo de pagamento: " + this.getTipoDePagamento().getDescricao() + "\n"
                + "Data do pedido: " + String.valueOf(this.getCalendar().get(Calendar.DAY_OF_MONTH)) + "/" + String.valueOf(this.getCalendar().get(Calendar.MONTH) + 1) + "/" + String.valueOf(this.getCalendar().get(Calendar.YEAR)) + "\n"
                + "Produtos : " + "\n\n" + linhas;

    }

}
